//package com.zhdl.modules.prefiresys.web.controller;
//
//import com.jacob.activeX.ActiveXComponent;
//import com.jacob.com.Dispatch;
//import com.jacob.com.Variant;
//import com.zhdl.common.util.WebResult;
//import com.zhdl.modules.prefiresys.web.service.CollectService;
//import com.zhdl.modules.prefiresys.web.service.impl.TextToSpeechServiceImpl;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
//import java.io.IOException;
//
///**
// * 配合测试的相关接口，内部使用
// */
//@RestController
//@RequestMapping("/api/v1/test")
//public class WarningLightController {
//    @Autowired
//    private CollectService collectService;
//
//    /**
//     * 测试返回 hello
//     *
//     * @return
//     */
//    @GetMapping("/conn")
//    @ResponseBody
//    public String hello() {
//        return "系统已启动";
//    }
//
//    TextToSpeechServiceImpl text = new TextToSpeechServiceImpl();
//
//    /**
//     * 读取文字
//     *
//     * @return
//     */
//    @GetMapping("/startReadText")
//    @ResponseBody
//    public String startReadText() {
//        text.startSpeak("火前报警-呜呜呜嘀嘀嘀-报警-报警-嘟嘟嘟嘟-报警-报警-呜呜呜嘀嘀嘀-火前报警");
//        return "ok";
//    }
//
//    @GetMapping("/stopReadText")
//    @ResponseBody
//    public String stopReadText() {
//        text.stopSpeak();
//        return "ok";
//    }
//
//
//    /**
//     * 读取文字
//     *
//     * @return
//     */
//    @GetMapping("/readText")
//    @ResponseBody
//    public String readText() {
//        //调用windowsApi 的 com组件，Sapi.spVoice是 windows com组件名称
//        ActiveXComponent activeXComponent = new ActiveXComponent("Sapi.SpVoice");
//        //从com组件中获得调度目标
//        Dispatch dis = activeXComponent.getObject();
//        try {
//            //设置语言组件属性
//            activeXComponent.setProperty("Volume", new Variant(100));
//            activeXComponent.setProperty("Rate", new Variant(-1));
//            Dispatch.call(dis, "Speak", new Variant("火前报警-呜呜呜嘀嘀嘀-报警-报警-嘟嘟嘟嘟-报警-报警-呜呜呜嘀嘀嘀-火前报警"));
//        }catch(Exception e){
//            e.printStackTrace();
//        }finally {
//            dis.safeRelease();
//            activeXComponent.safeRelease();
//        }
//        return "ok";
//    }
//
//
//    /**
//     * 消警
//     */
//    @GetMapping("/readText/no")
//    @ResponseBody
//    public WebResult<String> noReadAlarm() {
//        try {
//            // 创建SpVoice对象的ActiveXComponent实例
//            ActiveXComponent spVoice = new ActiveXComponent("Sapi.SpVoice");
//
//            // 获取SpVoice对象的Dispatch接口
//            Dispatch voice = spVoice.getObject();
//
//            // 设置音量和语速（如果需要）
//            Dispatch.put(voice, "Volume", new Variant(100));
//            Dispatch.put(voice, "Rate", new Variant(-1));
//
//            // 尝试停止朗读（这不是一个标准的方法，可能需要根据实际情况调整）
//            // 一种可能的解决方案是发送一个空字符串或特殊命令来尝试中断朗读
//            Dispatch.call(voice, "Speak", new Variant(""));
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            // 释放资源（如果需要）
//            // 注意：JACOB的safeRelease方法通常用于释放Variant对象，而不是ActiveXComponent或Dispatch对象
//            // 对于ActiveXComponent和Dispatch对象，通常不需要显式释放，它们会在垃圾回收时自动释放
//            // 如果确实需要手动释放COM对象，可以参考JACOB的文档或示例代码
//        }
//
//        System.out.println("Done.");
//        return WebResult.okResult("Done");
//    }
//
//    /**
//     * 打开关闭报警灯
//     *
//     * @return
//     */
//    @GetMapping("/ctrl/alarm/light/{type}")
//    @ResponseBody
//    public WebResult<Boolean> ctrlAlarmLight(@PathVariable("type") Boolean type) throws IOException, InterruptedException {
//
//        //boolean result = collectService.relaySerialPortCom.ctrlAlarmLight(type);
//        //return WebResult.okResult(result);
//
//        return WebResult.okResult(false);
//    }
//}
